package Servlets;

import Beans.Horario;
import Beans.Jogador;
import Beans.Jogo;
import Beans.Usuario;
import Daos.HorarioDao;
import Daos.JogadorDao;
import Daos.JogoDao;
import Daos.UsuarioDao;
import email.Email;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.mail.SendFailedException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ServletEnviarEmail extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


        HttpSession sessao = request.getSession();
        Horario horario = (Horario) sessao.getAttribute("horario");//pega horario da sessao
        String data = (String) sessao.getAttribute("data");//pega data  da sessao
        Usuario usuarioSessao = (Usuario) sessao.getAttribute("usuario");

        List<Usuario> usuarios = new ArrayList<Usuario>();//para pegar todos usuarios que foram enviados a requisiçao

        usuarios = (List<Usuario>) sessao.getAttribute("listaUsuariosLivres");


        List<String> pessoasParticipantes = new ArrayList<String>();//lista com as pessoas inclusas no jogo

        pessoasParticipantes = (List<String>) sessao.getAttribute("usuariosParticipantes");

        //pega mensagem de email
        String mensagemEmail = request.getParameter("mensagemEmail");
        System.out.println("Mensagem de Email Escrita: " + mensagemEmail);

        String emailDetinatario = null;
        String titulo = "Participação de jogo marcado por " + usuarioSessao.getNome();
        String mensagem = mensagemEmail;

        //cria jogo no banco de dados
        new HorarioDao(horario).persist();//joga horario no banco de dados

        Jogo jogo = new Jogo(data, usuarioSessao, horario);//cria novo jogo
        new JogoDao(jogo).persist();//joga jogo no banco de dados

        Usuario usuarioParaSalverEmJogador = new Usuario();//cria novo usuario
        for (int k = 0; k < pessoasParticipantes.size(); k++) {

            //pega lista com todos os usuarios
            List<Usuario> listadeUsuariosParaSalvarEmJogador = new UsuarioDao().getPorString("nome=" + pessoasParticipantes.get(k));

            usuarioParaSalverEmJogador = listadeUsuariosParaSalvarEmJogador.get(0);//pega o usuario selecionado, para salvar no banco
            System.out.println("Esse usuario foi pego para salvar no banco->nome: " + usuarioParaSalverEmJogador.getNome());

            //     usuarioParaSalverEmJogador = listadeUsuariosParaSalvarEmJogador.get(k);//pega usuarui

            Jogador jogador = new Jogador(0, usuarioParaSalverEmJogador, jogo);//cria novo jogo
            new JogadorDao(jogador).persist();//salva no banco

            emailDetinatario = usuarioParaSalverEmJogador.getEmail();//pega email do individuo
            System.out.println("Email dos individuos: " + usuarioParaSalverEmJogador.getEmail());
            new Email(emailDetinatario, titulo, mensagem);//envia mensagem para o email do individuo

          //  response.sendRedirect("sucesso.jsp");
        }

        response.sendRedirect("sucesso.jsp");
    }
}

